Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory, including volatile and non-volatile memory. Memory devices store data for other components. Byte addressable memory devices can be directly used by processors or other components to store both current state data as well as data not directly connected to a current system state. Block addressable devices, such as hard disk drives, are storage devices that are generally not directly usable by system components to store state information. Often, a memory device serves as an intermediary, where block addressed data is loaded into the memory device before use by the system.
Volatile memory requires power to maintain its data, and includes random-access memory (RAM), dynamic random-access memory (DRAM), or synchronous dynamic random-access memory (SDRAM), among others. Volatile memory devices are widely deployed in computing systems. Generally, these devices are byte addressable and thus directly accessible from processors, unlike storage devices that are addressable in pages, blocks, etc. Volatile memories like SRAM and DRAM are also fast enough to satisfy user expectations for device performance.
While the power-dependent nature of volatile memories is not an issue under many circumstances, there are instances in which the loss of data, such as system state data, un-committed transactions, etc., can be problematic. In these circumstances, losing power to the volatile memory can mean corrupted data or an inability to diagnose a problem because the evidence of the problem is lost when the volatile memory powers down. To address these instances, a variety of techniques have been tried. For example, battery backed RAMs use a secondary independent power source, a battery, to maintain the volatile memory contents in case the primary power source ceases to function. Battery backed RAMs had limited effectiveness due to the limited duration of the storage (e.g., when the battery could no longer provide power the contents were lost).
Non-volatile dual in-line memory modules (NVDIMMs) combine a popular volatile memory package family of standards (DIMMs) with non-volatile storage, such as NAND flash, to provide power-off retention of volatile memory contents for extended periods of time. The Joint Electron Device Engineering Council (JEDEC) has promulgated several standards pertaining to DIMMs, including Double Data Rate (DDR) memory interfaces and NVDIMMs that use DDR interfaces. NVDIMM-N is a family of JEDEC standards in which a DIMM includes flash storage and a controller in addition to DRAM or SRAM volatile memories. JEDEC standard 245B.01 (JESD245B.05) for Byte Addressable Energy Backed Interface (BAEBI) provides a number of implementation and interaction details with an example of a NVDIMM. As used herein, storage backed memory package refers to devices that integrate a non-volatile memory to preserve volatile memory data.